This is analysis for proteomics dataset generated using mouse scraped colon epithelium samples from Fabp-Cre;KRasWT and Fabp-Cre;KRasG12D mice. Emily Poulin harvested the tissue samples and the proteomics were performed by Joao Paulo. Part of the analysis code was adapted from original script from Shikha Sheth.
library(gridExtra)
library(ensembldb)
library(EnsDb.Mmusculus.v79)
library(grid)
library(ggplot2)
library(lattice)
library(reshape)
library(mixOmics)
library(gplots)
library(RColorBrewer)
library(readr)
library(dplyr)
library(VennDiagram)
library(clusterProfiler)
library(DOSE)
library(org.Mm.eg.db)
library(pathview)
library(AnnotationDbi)
library(tidyr)
library(qdapRegex)
library(gtools)
library(ggfortify)
library(enrichplot)
The original dataset was loaded.
colon_proteom <- read_csv("~/OneDrive - Harvard University/Haigis Lab/Projects/Halo-Ago2/Halo-Ago-KRas/Raw Data/Proteomics data/scraped colon/2015-03_HaigisMouseColon8plex_Prot.csv")
## New names:
## * `` -> ...2
## Rows: 8161 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (4): Protein Id, ...2, Gene Symbol, Description
## dbl (8): FABP_1, FABP_2, FABP_4, FABP_5, G12D_1, G12D_2, G12D_3, G12D_4
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# establish a new data frame for collecting stats
colon_stats <- colon_proteom[,1:3]
# Calculate the pvalue using parametric unpaired t test
p_value_list <- c()
for (i in 1:dim(colon_proteom)[1]) {
p_value <- t.test(unlist(colon_proteom[i,9:12]), unlist(colon_proteom[i,5:8]), paired = FALSE)$p.value
p_value_list <- c(p_value_list, p_value)
}
colon_stats <- cbind(colon_stats, p_value_list)
colnames(colon_stats)[4] <- "p_values"
# calculate the q value using Benjamini Hochberg FDR correction
q_value_list <- p.adjust(colon_stats$p_values, method = "BH")
colon_stats <- cbind(colon_stats, q_value_list)
colnames(colon_stats)[5] <- "q_values"
# calculate fold change and log fold change
foldchange_list <- c()
for (i in 1:dim(colon_proteom)[1]) {
foldchange <- foldchange(mean(unlist(colon_proteom[i,9:12])), mean(unlist(colon_proteom[i,5:8])))
foldchange_list <- c(foldchange_list, foldchange)
}
logfoldchange_list <- foldchange2logratio(foldchange_list)
colon_stats <- cbind(colon_stats, foldchange_list, logfoldchange_list)
colnames(colon_stats)[6:7] <- c("foldChange", "LFC")
Now we output this statistical analysis file into a csv file.
write.csv(colon_stats, "ceMS_diff.csv", col.names = NULL)
Just to check how many siginificant proteins do we have based on p< 0.05 and q< 0.1
sig_dif_stats <- subset(colon_stats, colon_stats$p_values <= 0.05 & colon_stats$q_values <= 0.1)
dim(sig_dif_stats)[1]
## [1] 2348
So there are 2348 proteins identified to have significantly different expression between G12D/WT.
Since the number of significant changes are quite small, I want to use PCA to check how the samples cluster.
dir.create("PDF_figure", showWarnings = FALSE)
df <- colon_proteom[5:12]
df <- as.data.frame(t(df))
df <- cbind(df, c('WT','WT','WT','WT','G12D','G12D','G12D','G12D'))
colnames(df)[8162] <- 'Genotype'
df.set <- as.matrix(df[,1:8161])
df.pca <- prcomp(df.set, center = TRUE, scale = TRUE)
autoplot(df.pca, data = df, colour = 'Genotype') +
geom_text(aes(label=rownames(df)), vjust = 2, hjust = -0.1) +
xlim(-0.5, 0.6) + ylim(-0.7, 0.6)
pdf('PDF_figure/PCA.pdf',
height = 4,
width = 6)
autoplot(df.pca, data = df, colour = 'Genotype') +
geom_text(aes(label=rownames(df)), vjust = 2, hjust = -0.1) +
xlim(-0.5, 0.6) + ylim(-0.7, 0.6)
dev.off()
## quartz_off_screen
## 2
pseudoCount = log2(colon_proteom[5:12])
# remove NA, NaN, Inf values from the dataframe
pseudoCount <- na.omit(pseudoCount)
pseudoCount <- pseudoCount[is.finite(rowSums(pseudoCount)),]
mat.dist = pseudoCount
mat.dist = as.matrix(dist(t(mat.dist)))
mat.dist = mat.dist/max(mat.dist)
setwd("/Users/mizuhi/OneDrive - Harvard University/Haigis Lab/Projects/Halo-Ago2/Halo-Ago-KRas/Raw Data/Proteomics data/scraped colon")
png('Hierchical_Clustering.png')
cim(mat.dist, symkey = FALSE, margins = c(10, 10 ))
suppressMessages(dev.off())
## quartz_off_screen
## 2
pdf('PDF_figure/Hierchical_Clustering.pdf')
cim(mat.dist, symkey = FALSE, margins = c(7, 7))
dev.off()
## quartz_off_screen
## 2
Final output is following:
For heatmap, I will z-score all quantifications across all samples for the same protein. Heatmaps for all proteins with p<0.05 and q < 0.1 are plotted
suppressMessages(library(mosaic))
sig_index <- c()
duplicate <- c()
for (i in 1:dim(sig_dif_stats)[1]) {
index <- grep(sig_dif_stats$`Protein Id`[i], colon_proteom$`Protein Id`)
if (length(index) == 1) {
sig_index <- c(sig_index, index)
}
else {
duplicate <- c(duplicate, i)
}
}
sig_count <- colon_proteom[sig_index,]
sig_dif <- cbind(sig_dif_stats[-duplicate,], sig_count)
for (i in 1:dim(sig_dif)[1]) {
sig_dif[i,12:19] <- zscore(as.numeric(sig_dif[i,12:19]))
}
my_palette <- colorRampPalette(c("blue", "white", "red"))(256)
heatmap_matrix <- as.matrix(sig_dif[,12:19])
png('G12D vs WT colon proteomics.png',
width = 600,
height = 1400,
res = 200,
pointsize = 8)
par(cex.main=1.1)
heatmap.2(heatmap_matrix,
main = "DE proteins\nin colon epithelium\n(G12D/WT) p < 0.05 q < 0.1",
density.info = "none",
key = TRUE,
lwid = c(3,7),
lhei = c(1,7),
col=my_palette,
margins = c(8,2),
symbreaks = TRUE,
trace = "none",
dendrogram = "row",
labRow = FALSE,
ylab = "Proteins",
cexCol = 1.5,
Colv = "NA")
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/Heatmap.pdf',
width = 6,
height = 14)
heatmap.2(heatmap_matrix,
main = "DE proteins\nin colon epithelium\n(G12D/WT) p < 0.05 q < 0.1",
density.info = "none",
key = TRUE,
lwid = c(3,7),
lhei = c(1,7),
col=my_palette,
margins = c(8,2),
symbreaks = TRUE,
trace = "none",
dendrogram = "row",
labRow = FALSE,
ylab = "Proteins",
cexCol = 1.5,
Colv = "NA")
dev.off()
## quartz_off_screen
## 2
Final output is
# Scatter plot
colon_stats$KrasG12D_mean <- rowMeans(log2(colon_proteom[,9:12]))
colon_stats$KrasWT_mean <- rowMeans(log2(colon_proteom[,5:8]))
ggplot(colon_stats, aes(x = KrasWT_mean, y = KrasG12D_mean)) +
xlab("WT_Average(log2)") + ylab("G12D_Average(log2)") +
geom_point(data = colon_stats, alpha = 0.5, size = 1, color = "grey") +
geom_point(data = subset(colon_stats,colon_stats$p_values < 0.05 & colon_stats$q_values < 0.1 & colon_stats$LFC > 0), alpha = 0.5, size = 1, color = "red") +
geom_point(data = subset(colon_stats,colon_stats$p_values < 0.05 & colon_stats$q_values < 0.1 & colon_stats$LFC < 0), alpha = 0.5, size = 1, color = "blue") +
labs(title = "G12D vs WT Scatter Plot")
pdf('PDF_figure/Scatter_Plot.pdf',
width = 5,
height = 4)
ggplot(colon_stats, aes(x = KrasWT_mean, y = KrasG12D_mean)) +
xlab("WT_Average(log2)") + ylab("G12D_Average(log2)") +
geom_point(data = colon_stats, alpha = 0.5, size = 1, color = "grey") +
geom_point(data = subset(colon_stats,colon_stats$p_values < 0.05 & colon_stats$q_values < 0.1 & colon_stats$LFC > 0), alpha = 0.5, size = 1, color = "red") +
geom_point(data = subset(colon_stats,colon_stats$p_values < 0.05 & colon_stats$q_values < 0.1 & colon_stats$LFC < 0), alpha = 0.5, size = 1, color = "blue") +
labs(title = "G12D vs WT Scatter Plot")
dev.off()
## quartz_off_screen
## 2
# MA plot
colon_stats$'baseMean' <- rowMeans(colon_proteom[,5:12])
colon_stats$'log2baseMean' <- log(colon_stats$`baseMean`,2)
red_subset <- subset(colon_stats,colon_stats$p_values < 0.05 & colon_stats$q_values < 0.1 & colon_stats$LFC > 0)
blue_subset <- subset(colon_stats,colon_stats$p_values < 0.05 & colon_stats$q_values < 0.1 & colon_stats$LFC < 0)
ggplot(colon_stats, aes(x = colon_stats$`log2baseMean`, y = colon_stats$`LFC`)) +
xlab("Average Expression") + ylab("LFC") +
geom_point(data = colon_stats, alpha = 0.5, size = 1, color = "grey") +
geom_point(data = red_subset, aes(x=red_subset$`log2baseMean`, y=red_subset$`LFC`), alpha = 0.5, size = 1, color = "red") +
geom_point(data = blue_subset, aes(x=blue_subset$`log2baseMean`, y=blue_subset$`LFC`), alpha = 0.5, size = 1, color = "blue") +
labs(title = "G12D vs WT MA Plot")
## Warning: Use of `colon_stats$log2baseMean` is discouraged. Use `log2baseMean`
## instead.
## Warning: Use of `colon_stats$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `red_subset$log2baseMean` is discouraged. Use `log2baseMean`
## instead.
## Warning: Use of `red_subset$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `blue_subset$log2baseMean` is discouraged. Use `log2baseMean`
## instead.
## Warning: Use of `blue_subset$LFC` is discouraged. Use `LFC` instead.
pdf('PDF_figure/MA_Plot.pdf',
width = 5,
height = 4)
ggplot(colon_stats, aes(x = colon_stats$`log2baseMean`, y = colon_stats$`LFC`)) +
xlab("Average Expression") + ylab("LFC") +
geom_point(data = colon_stats, alpha = 0.5, size = 1, color = "grey") +
geom_point(data = red_subset, aes(x=red_subset$`log2baseMean`, y=red_subset$`LFC`), alpha = 0.5, size = 1, color = "red") +
geom_point(data = blue_subset, aes(x=blue_subset$`log2baseMean`, y=blue_subset$`LFC`), alpha = 0.5, size = 1, color = "blue") +
labs(title = "G12D vs WT MA Plot")
## Warning: Use of `colon_stats$log2baseMean` is discouraged. Use `log2baseMean`
## instead.
## Warning: Use of `colon_stats$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `red_subset$log2baseMean` is discouraged. Use `log2baseMean`
## instead.
## Warning: Use of `red_subset$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `blue_subset$log2baseMean` is discouraged. Use `log2baseMean`
## instead.
## Warning: Use of `blue_subset$LFC` is discouraged. Use `LFC` instead.
dev.off()
## quartz_off_screen
## 2
# Volcano Plot
ggplot(colon_stats, aes(x = colon_stats$`LFC`, y = -log(colon_stats$`p_values`,10))) +
xlab("LFC") + ylab("-log10(P value)") +
geom_point(data = colon_stats, alpha = 0.5, size = 1, color = "grey") +
geom_point(data = red_subset, aes(x=red_subset$`LFC`, y=-log(red_subset$`p_values`,10)), alpha = 0.5, size = 1, color = "red") +
geom_point(data = blue_subset, aes(x=blue_subset$`LFC`, y=-log(blue_subset$`p_values`,10)), alpha = 0.5, size = 1, color = "blue") +
labs(title = "G12D vs WT Volcano Plot")
## Warning: Use of `colon_stats$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `colon_stats$p_values` is discouraged. Use `p_values` instead.
## Warning: Use of `red_subset$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `red_subset$p_values` is discouraged. Use `p_values` instead.
## Warning: Use of `blue_subset$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `blue_subset$p_values` is discouraged. Use `p_values` instead.
pdf('PDF_figure/Volcano_Plot.pdf',
width = 5,
height = 4)
ggplot(colon_stats, aes(x = colon_stats$`LFC`, y = -log(colon_stats$`p_values`,10))) +
xlab("LFC") + ylab("-log10(P value)") +
geom_point(data = colon_stats, alpha = 0.5, size = 1, color = "grey") +
geom_point(data = red_subset, aes(x=red_subset$`LFC`, y=-log(red_subset$`p_values`,10)), alpha = 0.5, size = 1, color = "red") +
geom_point(data = blue_subset, aes(x=blue_subset$`LFC`, y=-log(blue_subset$`p_values`,10)), alpha = 0.5, size = 1, color = "blue") +
labs(title = "G12D vs WT Volcano Plot")
## Warning: Use of `colon_stats$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `colon_stats$p_values` is discouraged. Use `p_values` instead.
## Warning: Use of `red_subset$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `red_subset$p_values` is discouraged. Use `p_values` instead.
## Warning: Use of `blue_subset$LFC` is discouraged. Use `LFC` instead.
## Warning: Use of `blue_subset$p_values` is discouraged. Use `p_values` instead.
dev.off()
## quartz_off_screen
## 2
For the Go analysis, I am using all proteins that have a p<0.05 and q < 0.1.
target_gene <- as.character(sig_dif_stats$`Protein Id`)
detected_gene <- as.character(colon_proteom$`Protein Id`)
# Run GO enrichment analysis for biological process
ego_BP <- enrichGO(gene = target_gene,
universe = detected_gene,
keyType = "UNIPROT",
OrgDb = org.Mm.eg.db,
ont = "BP",
pAdjustMethod = "BH",
pvalueCutoff = 0.05,
readable = TRUE)
# Output results from GO analysis to a table
cluster_summary_BP <- data.frame(ego_BP)
dim(cluster_summary_BP)[1]
## [1] 130
write.csv(cluster_summary_BP, "GO/GO analysis_BP.csv")
# Run GO enrichment analysis for molecular function
ego_MF <- enrichGO(gene = target_gene,
universe = detected_gene,
keyType = "UNIPROT",
OrgDb = org.Mm.eg.db,
ont = "MF",
pAdjustMethod = "BH",
pvalueCutoff = 0.05,
readable = TRUE)
# Output results from GO analysis to a table
cluster_summary_MF <- data.frame(ego_MF)
dim(cluster_summary_MF)[1]
## [1] 25
write.csv(cluster_summary_MF, "GO/GO analysis_MF.csv")
# Run GO enrichment analysis for cellular component
ego_CC <- enrichGO(gene = target_gene,
universe = detected_gene,
keyType = "UNIPROT",
OrgDb = org.Mm.eg.db,
ont = "CC",
pAdjustMethod = "BH",
pvalueCutoff = 0.05,
readable = TRUE)
# Output results from GO analysis to a table
cluster_summary_CC <- data.frame(ego_CC)
dim(cluster_summary_CC)[1]
## [1] 35
write.csv(cluster_summary_CC, "GO/GO analysis_CC.csv")
png('GO/GO dotplot_BP.png',
width = 2000,
height = 1600,
res = 100,
pointsize = 8)
dotplot(ego_BP, showCategory=50)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO dotplot_BP.pdf',
width = 20,
height = 16)
dotplot(ego_BP, showCategory=50)
dev.off()
## quartz_off_screen
## 2
Final output is following: #### Molecular Function
png('GO/GO dotplot_MF.png',
width = 800,
height = 800,
res = 100,
pointsize = 8)
dotplot(ego_MF, showCategory=50)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO dotplot_MF.pdf',
width = 8,
height = 8)
dotplot(ego_MF, showCategory=50)
dev.off()
## quartz_off_screen
## 2
Final output is following: #### Cellular Component
png('GO/GO dotplot_CC.png',
width = 800,
height = 800,
res = 100,
pointsize = 8)
dotplot(ego_CC, showCategory=50)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO dotplot_CC.pdf',
width = 8,
height = 8)
dotplot(ego_CC, showCategory=50)
dev.off()
## quartz_off_screen
## 2
Final output is following:
ego_BP <- pairwise_termsim(ego_BP)
png('GO/GO enrichment_BP.png',
width = 1600,
height = 1600,
res = 100,
pointsize = 8)
emapplot(ego_BP, showCategory = 50)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO enrichment_BP.pdf',
width = 16,
height = 16)
emapplot(ego_BP, showCategory = 50)
dev.off()
## quartz_off_screen
## 2
Final output is following: #### Molecular Function
ego_MF <- pairwise_termsim(ego_MF)
png('GO/GO enrichment_MF.png',
width = 1000,
height = 1000,
res = 100,
pointsize = 8)
emapplot(ego_MF, showCategory = 50)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO enrichment_MF.pdf',
width = 10,
height = 10)
emapplot(ego_MF, showCategory = 50)
dev.off()
## quartz_off_screen
## 2
Final output is following: #### Cellular Component
ego_CC <- pairwise_termsim(ego_CC)
png('GO/GO enrichment_CC.png',
width = 1000,
height = 1000,
res = 100,
pointsize = 8)
emapplot(ego_CC, showCategory = 50)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO enrichment_CC.pdf',
width = 10,
height = 10)
emapplot(ego_CC, showCategory = 50)
dev.off()
## quartz_off_screen
## 2
Final output is following:
The category netplot shows the relationships between the genes associated with the top five most significant GO terms and the fold changes of the significant genes associated with these terms (color).
OE_foldchanges <- colon_stats$LFC
names(OE_foldchanges) <- colon_stats$`Gene Symbol`
png('GO/GO cnetplot_BP.png',
width = 1600,
height = 1600,
res = 100,
pointsize = 8)
cnetplot(ego_BP,
categorySize="pvalue",
showCategory = 5,
foldChange=OE_foldchanges,
vertex.label.font=6)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO cnetplot_BP.pdf',
width = 16,
height = 16)
cnetplot(ego_BP,
categorySize="pvalue",
showCategory = 5,
foldChange=OE_foldchanges,
vertex.label.font=6)
dev.off()
## quartz_off_screen
## 2
Final output is following: #### Molecular Function
png('GO/GO cnetplot_MF.png',
width = 1600,
height = 1600,
res = 100,
pointsize = 8)
cnetplot(ego_MF,
categorySize="pvalue",
showCategory = 5,
foldChange=OE_foldchanges,
vertex.label.font=6)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO cnetplot_MF.pdf',
width = 16,
height = 16)
cnetplot(ego_MF,
categorySize="pvalue",
showCategory = 5,
foldChange=OE_foldchanges,
vertex.label.font=6)
dev.off()
## quartz_off_screen
## 2
Final output is following: #### Cellular Component
png('GO/GO cnetplot_CC.png',
width = 1600,
height = 1600,
res = 100,
pointsize = 8)
cnetplot(ego_CC,
categorySize="pvalue",
showCategory = 5,
foldChange=OE_foldchanges,
vertex.label.font=6)
dev.off()
## quartz_off_screen
## 2
pdf('PDF_figure/GO cnetplot_CC.pdf',
width = 16,
height = 16)
cnetplot(ego_CC,
categorySize="pvalue",
showCategory = 5,
foldChange=OE_foldchanges,
vertex.label.font=6)
## Warning: ggrepel: 1 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
dev.off()
## quartz_off_screen
## 2
Final output is following:
First I need to annotate quantification file with Ensembl ID.
# annotate the tumor stats with gene symbol
annotations_edb <- AnnotationDbi::select(org.Mm.eg.db,
keys = colon_proteom$`Protein Id`,
columns = c("ENSEMBL"),
keytype = "UNIPROT")
## 'select()' returned 1:many mapping between keys and columns
# Determine the indices for the non-duplicated genes
non_duplicates_idx <- which(duplicated(annotations_edb$UNIPROT) == FALSE)
non_duplicates_idx <- which(duplicated(annotations_edb$ENSEMBL) == FALSE)
non_duplicates_idx <- which(is.na(annotations_edb$ENSEMBL) == FALSE)
# Return only the non-duplicated genes using indices
annotations_edb <- annotations_edb[non_duplicates_idx, ]
# Check number of NAs returned
is.na(annotations_edb$ENSEMBL) %>%
which() %>%
length()
## [1] 0
# Join the Ensembl annotation to proteomics quantification
colon_proteom <- inner_join(colon_proteom, annotations_edb, by=c("Protein Id"="UNIPROT"))
write.csv(colon_proteom, "GSEA/Raw Quantification.csv")
sessionInfo()
## R version 4.1.1 (2021-08-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Catalina 10.15.4
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] grid stats4 parallel stats graphics grDevices utils
## [8] datasets methods base
##
## other attached packages:
## [1] mosaic_1.8.3 ggridges_0.5.3
## [3] mosaicData_0.20.2 ggformula_0.10.1
## [5] ggstance_0.3.5 Matrix_1.3-4
## [7] enrichplot_1.12.2 ggfortify_0.4.12
## [9] gtools_3.9.2 qdapRegex_0.7.2
## [11] tidyr_1.1.4 pathview_1.32.0
## [13] org.Mm.eg.db_3.13.0 DOSE_3.18.2
## [15] clusterProfiler_4.0.5 VennDiagram_1.6.20
## [17] futile.logger_1.4.3 dplyr_1.0.7
## [19] readr_2.0.2 RColorBrewer_1.1-2
## [21] gplots_3.1.1 mixOmics_6.16.3
## [23] MASS_7.3-54 reshape_0.8.8
## [25] lattice_0.20-45 ggplot2_3.3.5
## [27] EnsDb.Mmusculus.v79_2.99.0 ensembldb_2.16.4
## [29] AnnotationFilter_1.16.0 GenomicFeatures_1.44.2
## [31] AnnotationDbi_1.54.1 Biobase_2.52.0
## [33] GenomicRanges_1.44.0 GenomeInfoDb_1.28.4
## [35] IRanges_2.26.0 S4Vectors_0.30.1
## [37] BiocGenerics_0.38.0 gridExtra_2.3
##
## loaded via a namespace (and not attached):
## [1] utf8_1.2.2 tidyselect_1.1.1
## [3] htmlwidgets_1.5.4 RSQLite_2.2.8
## [5] BiocParallel_1.26.2 scatterpie_0.1.7
## [7] munsell_0.5.0 withr_2.4.2
## [9] colorspace_2.0-2 GOSemSim_2.18.1
## [11] filelock_1.0.2 highr_0.9
## [13] knitr_1.36 rstudioapi_0.13
## [15] MatrixGenerics_1.4.3 labeling_0.4.2
## [17] KEGGgraph_1.52.0 GenomeInfoDbData_1.2.6
## [19] polyclip_1.10-0 bit64_4.0.5
## [21] farver_2.1.0 downloader_0.4
## [23] vctrs_0.3.8 treeio_1.16.2
## [25] generics_0.1.0 lambda.r_1.2.4
## [27] xfun_0.26 BiocFileCache_2.0.0
## [29] R6_2.5.1 graphlayouts_0.7.1
## [31] bitops_1.0-7 cachem_1.0.6
## [33] fgsea_1.18.0 gridGraphics_0.5-1
## [35] DelayedArray_0.18.0 assertthat_0.2.1
## [37] BiocIO_1.2.0 scales_1.1.1
## [39] vroom_1.5.5 ggraph_2.0.5
## [41] gtable_0.3.0 tidygraph_1.2.0
## [43] rlang_0.4.11 splines_4.1.1
## [45] rtracklayer_1.52.1 lazyeval_0.2.2
## [47] broom_0.7.9 mosaicCore_0.9.0
## [49] yaml_2.2.1 reshape2_1.4.4
## [51] crosstalk_1.1.1 backports_1.2.1
## [53] qvalue_2.24.0 tools_4.1.1
## [55] ggplotify_0.1.0 ellipsis_0.3.2
## [57] jquerylib_0.1.4 ggdendro_0.1.22
## [59] Rcpp_1.0.7 plyr_1.8.6
## [61] progress_1.2.2 zlibbioc_1.38.0
## [63] purrr_0.3.4 RCurl_1.98-1.5
## [65] prettyunits_1.1.1 viridis_0.6.1
## [67] cowplot_1.1.1 SummarizedExperiment_1.22.0
## [69] haven_2.4.3 ggrepel_0.9.1
## [71] magrittr_2.0.1 data.table_1.14.2
## [73] RSpectra_0.16-0 futile.options_1.0.1
## [75] DO.db_2.9 ggnewscale_0.4.5
## [77] ProtGenerics_1.24.0 matrixStats_0.61.0
## [79] hms_1.1.1 patchwork_1.1.1
## [81] evaluate_0.14 leaflet_2.0.4.1
## [83] XML_3.99-0.8 compiler_4.1.1
## [85] biomaRt_2.48.3 ellipse_0.4.2
## [87] tibble_3.1.5 KernSmooth_2.23-20
## [89] crayon_1.4.1 shadowtext_0.0.9
## [91] htmltools_0.5.2 ggfun_0.0.4
## [93] corpcor_1.6.10 tzdb_0.1.2
## [95] aplot_0.1.1 DBI_1.1.1
## [97] tweenr_1.0.2 formatR_1.11
## [99] dbplyr_2.1.1 rappdirs_0.3.3
## [101] cli_3.0.1 igraph_1.2.6
## [103] forcats_0.5.1 pkgconfig_2.0.3
## [105] GenomicAlignments_1.28.0 xml2_1.3.2
## [107] ggtree_3.0.4 rARPACK_0.11-0
## [109] XVector_0.32.0 yulab.utils_0.0.2
## [111] stringr_1.4.0 digest_0.6.28
## [113] graph_1.70.0 Biostrings_2.60.2
## [115] rmarkdown_2.11 fastmatch_1.1-3
## [117] tidytree_0.3.5 restfulr_0.0.13
## [119] curl_4.3.2 Rsamtools_2.8.0
## [121] rjson_0.2.20 lifecycle_1.0.1
## [123] nlme_3.1-153 jsonlite_1.7.2
## [125] viridisLite_0.4.0 fansi_0.5.0
## [127] labelled_2.8.0 pillar_1.6.3
## [129] KEGGREST_1.32.0 fastmap_1.1.0
## [131] httr_1.4.2 GO.db_3.13.0
## [133] glue_1.4.2 png_0.1-7
## [135] bit_4.0.4 Rgraphviz_2.36.0
## [137] ggforce_0.3.3 stringi_1.7.4
## [139] blob_1.2.2 org.Hs.eg.db_3.13.0
## [141] caTools_1.18.2 memoise_2.0.0
## [143] ape_5.5